# Usage: rofftoc PerlTOC.xxx.raw
#
# Post-processes roffitall output. Called from roffitall to produce
# a formatted table of contents.
#
# Author: Tom Christiansen

print <<'EOF';
.de NP
'.sp 0.8i
.tl ''- % -''
'bp
'sp 0.5i
.tl ''\fB\s+2Perl Table of Contents\s0\fR''
'sp 0.3i
..
.wh -1i NP
.af % i
.sp 0.5i
.tl ''\fB\s+5Perl Table of Contents\s0\fR''
.sp 0.5i
.nf
.na
EOF
while (<>) {
    #chomp;
    s/Index://;
    ($type, $page, $desc) = split ' ', $_, 3;
    $desc =~ s/^"(.*)"$/$1/;
    if      ($type eq 'Title') {
	($name = $desc) =~ s/ .*//;
	next;
    } elsif ($type eq 'Name') {
	#print STDERR  $page, "\t", $desc;
	print ".ne 5\n";
	print ".in 0\n";
	print ".sp\n";
	print ".ft B\n";
	print "$desc\n";
	print ".ft P\n";
	print ".in 5n\n";
    } elsif ($type eq 'Header') {
	print ".br\n", $page, "\t", $desc;
    } elsif ($type eq 'Subsection') {
	print ".br\n", $page, "\t\t", $desc;
    } elsif ($type eq 'Item') {
	next if $desc =~ /\\bu/;
	next unless $name =~ /POSIX|func/i;
	print ".br\n", $page, "\t\t\t", $desc;
    }
} 
__END__
Index:Title	1	"PERL 1"
Index:Name	1	"perl - Practical Extraction and Report Language"
Index:Header	1	"NAME"
Index:Header	1	"SYNOPSIS"
Index:Header	2	"DESCRIPTION"
Index:Item	2	"\(bu Many usability enhancements"
Index:Item	2	"\(bu Simplified grammar"
Index:Item	2	"\(bu Lexical scoping"
Index:Item	2	"\(bu Arbitrarily nested data structures"
Index:Item	2	"\(bu Modularity and reusability"
